### KEGG内容下载及解析函数 依赖函数： jia_kegg_reaction_catcher

## 此函数的功能： 获取某个物种下属所有KEGG 代谢通路内部 的 反应关系信息。
## 将 整合后的信息输出到csv文件中，并且做为返回值返回，供后续分析使用。



if ( F ) {
    # organism <-  "rno"
    # file_path <-  ref_doc_path
    # file_name <-  "2019-05-03 kegg 大鼠代谢通路反应关系整理.csv"
    
    file_path = ref_doc_path 
    file_name  = "2019-05-03 kegg 大鼠代谢通路反应关系整理.csv"
    file_name <-  paste0 ( file_path , file_name )
    file.exists( file_name )
    file.exists( "fjdlkfjk" )
    
    final_pooled_pathway %>% length()
    final_pooled_pathway %>% dim()
    
}



jia_kegg_reaction_pool_by_ori <-  function ( organism = "rno", file_path = ref_doc_path , file_name , force_renew = F, show_notes = T ){  
    ## 使用 rno 代表大鼠， 使用 hsa 代表人。
    ## file_path 设定文件路径， 默认保存到  ref_doc_path 参考资料文件夹  
    ## file_name 设定文件名称。 
    ## Part 1 按照物种批量下载
    ## force_renew 设定是否强制更新数据库的信息
    
    file_name <-  paste0 ( file_path , file_name )
    if ( file.exists(  file_name ) & force_renew == F ) {
        ### 如果已经生成了相应的代谢通路的反应信息，就不用再跑一遍了
        if (show_notes == T ) {
            cat("The file: \n\t", file_name, " \nhas already exists. So this procedure has been skipped. If you still want to renew the information, please change the 'force_renew' as 'T' to renew the pathway reaction information in force.\n因为已经整理过一遍这个代谢通路信息了，所以这次就不弄了，如果您想要更新一下数据库，那么可以把‘force_renew’参数更改为‘T’使得数据库中的代谢通路反应信息强制更新")   
        }
        
        
        final_pooled_pathway <-  read.csv ( file_name )
        return( final_pooled_pathway )
        
    }
    
   

    ## 若文件不存在,则对指定物种的代谢通路进行下载和解析.
    result   <-  keggList("pathway", organism )
    pathways <-  result %>% names ( ) %>% gsub ( "path:" , "", . )
    
    for ( i in 1:length(pathways )) {
        if ( i == 1 ) { final_pooled_pathway <-  data.frame( stringsAsFactors = F )}
        each_pathway <-  jia_kegg_reaction_catcher( pathway_name =  pathways [ i ] )
        final_pooled_pathway <-  rbind ( final_pooled_pathway , each_pathway )
    }
    
    
    write.csv ( final_pooled_pathway ,  file_name )
    return ( final_pooled_pathway ) ### 返回反应结果。
    
}

